package com.example.demo.design_patterns.composite;

/**
 * 组合模式
 *      组合模式是为了表示那些层次结构，同时部分和整体也可能是一样的结构，常见的如文件夹或者树。
 *
 * @author: htc
 * @date: Created in 10:27 2019/3/13.
 */
public class Folder extends Component {
    /**
     * 既可以放文件File类，也可以放文件夹Folder类。Folder类下又有子文件或子文件夹。
     */
    Component[] files;
    String foldername;

    public Folder(Component[] files) {
        this.files = files;
    }

    public void scan() {
        for (Component f : files) {
            if (f instanceof File) {
                System.out.println("File " + ((File) f).filename);
            } else if (f instanceof Folder) {
                Folder e = (Folder) f;
                System.out.println("Foler " + e.foldername);
                e.scan();
            }
        }
    }
}
